package com.review.Test;

import java.util.concurrent.DelayQueue;

public class MyDelayQueue implements Runnable{
	
	private DelayQueue<User> queue = new DelayQueue<>();

	@Override
	public void run() {
		while (true) {
			try {
				User user = queue.take();
				System.out.println(user);
				//测试取元素的时候能否添加元素----能
//				Thread.sleep(3000);
//				queue.add(new User(16000+System.currentTimeMillis(), "6s"));
//				System.out.println("finish");
			} catch (Exception e) {
				e.printStackTrace();
			}
		}
		
	}
	
	public static void main(String[] args) throws InterruptedException {
		
		MyDelayQueue myDelayQueue = new MyDelayQueue();
		//自动移除
//		new Thread(myDelayQueue).start();
		
		myDelayQueue.queue.add(new User(16000+System.currentTimeMillis(), "6s"));
		myDelayQueue.queue.add(new User(12000+System.currentTimeMillis(), "2s"));
		myDelayQueue.queue.add(new User(14000+System.currentTimeMillis(), "4s"));
		
		
		//手动移除---take()时。若没有元素到期，则等第一个元素到期取走；若有过期元素，则直接取走
//		User take = myDelayQueue.queue.take();
//		System.out.println(take);
//		User take1 = myDelayQueue.queue.take();
//		System.out.println(take1);
//		User take2 = myDelayQueue.queue.take();
//		System.out.println(take2);
//		System.out.println("finish");
		
		
		//测试取元素的时候能够添加元素-----能
//		new Thread(myDelayQueue).start();
//		User take = myDelayQueue.queue.take();
//		System.out.println(take);
		

		
	}

	
}
